Cloud computing offers an alternative to owning and maintaining infrastructure for computing. The demands on modern computing increasingly require ways to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software. Services models, such as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS) have arisen in response to this demand.
IaaS involves providing databases, servers, electrical power, and network equipment for a cloud-hosted application. This allows usage fees to replace long-term commitments to infrastructure. PaaS provides a development platform which allows for applications to extend and interact with other cloud applications and cloud data. Lastly, SaaS allows for software to be hosted and run in the cloud rather than on a user's computer. IaaS, PaaS, and SaaS provide scalability—the ability to start with a relatively small or large resource footprint and increase it as needs increase or decrease it as needs decrease.
Cloud service providers are challenged with providing sufficient resources to meet the demands of customers. The goal is elasticity: the ability of a cloud service provider to provision flexible computing power when and wherever required. Cloud service providers must provide the appearance of infinite computing resources available on demand, quickly enough to follow load surges, thereby eliminating the need for cloud computing users to plan far ahead for provisioning. This elimination of an up-front commitment by cloud users allows companies to start small and increase hardware resources only when there is an increase in their needs.
Cloud providers must provide the outward appearance of having available an unlimited amount of resources available on-demand. The benefits of cloud services allow users to avoid not just investing in long-term commitments to infrastructure, but also to avoid having to develop plans on how resources will be used. If there are surges in load, the user expects the cloud to simply provide the needed resources in response. Dedicated computer hardware and software infrastructure has limited flexibility and is unfavorable for reaching this goal. Accordingly, a cloud provider must be able to provide resources to users without the users needing to develop plan for the availability of resources. This places the burden on cloud providers to manage their resources effectively.